#include<iostream>
#include<unordered_set>
using namespace std;

class Solution {
public:
    int getSum(int n) {
        int sum = 0;
        while(n != 0){
            sum += (n % 10) * (n % 10);
            n /= 10;
        }
        return sum;
    }
    bool isHappy(int n) {
        unordered_set<int> result;
        while(1){
            int sum = getSum(n);
            if(sum == 1){
                return true;
            }
            if(result.find(sum) != result.end()){ // 如果sum在result中出现过，则说明陷入无限循环了
                return false;
            }
            else{
                result.insert(sum); // 如果sum没有出现过且不为1，侧加入result中
            }
            n = sum; // 更新n的值
        }
    }
};

int main()
{
    int n;
    Solution s;
    cin >> n;
    cout <<  s.isHappy(n) << endl;
    return 0;
}